package prgechecsmodel;

import java.util.TreeSet;

public interface IBoard {

    int distance(int squareA, int squareB);

    void genPromote(TreeSet<IMove> ret, int from, int to, int bits);

    void genPush(TreeSet<IMove> ret, int from, int to, int bits);

    int gen_allLegalMoves(TreeSet<IMove> moves, int startIndex);

    int gen_allLegalMoves(int[] moves, int i);

    TreeSet<IMove> genCaps();

    TreeSet<IMove> gen();

    boolean validate(int move);

    boolean isAttacked(int attacked, int side);

    int reps();

    boolean makeMove(IMove m);

    public void makeMove(int i);

    int rank(int index);

    int col(int x);

    void setupStart();

    void unmakeMove(int move);

    void takeBack();

    int getColor(int i, int j);

    int getPiece(int i, int j);

    boolean inCheck(int s);

    boolean isWhiteToMove();

    String getFen();

    void inputFen(String fen);

    @Override
    String toString();
}
